﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data;
using System.Text.RegularExpressions;

namespace hostal
{
    public partial class BuscarHospedaje : Form
    {
        DataTable dataTableTemporal = new DataTable();

        public BuscarHospedaje()
        {
            InitializeComponent();
            habitacionDataAccess habitaciones = new habitacionDataAccess();
            dataTableTemporal = habitaciones.buscarHabitaciones();
            dg.DataSource = dataTableTemporal;
            for (int i = 0; i < dg.RowCount; i++)
            {
                CBHabitaciones.Items.Add(dg.Rows[i].Cells["numero"].Value);
            }
        }

        public BuscarHospedaje(string salida)
        {
            InitializeComponent();
            BTVerHospedaje.Hide();
            BTEditarHospedaje.Hide();
            BTCancelarHospedaje.Hide();
            BTAceptar.Show();
            BTCancelar.Show();
            CBTipoBusqueda.Enabled=false;
            habitacionDataAccess habitaciones = new habitacionDataAccess();
            dataTableTemporal = habitaciones.buscarHabitaciones();
            dg.DataSource = dataTableTemporal;
            for (int i = 0; i < dg.RowCount; i++)
            {
                CBHabitaciones.Items.Add(dg.Rows[i].Cells["numero"].Value);
            }
        }

        private void TBBuscarHospedaje_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBTipoBusqueda.Text == "Numero Habitacion")
                {
                    BTVerHospedaje.Hide();
                    HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                    dataTableTemporal = buscarDataAccess.buscarHospedaje(CBHabitaciones.Text);
                    DGHospedaje.DataSource = dataTableTemporal;
                }
                if (CBTipoBusqueda.Text == "Nombre y Apellido")
                {
                    BTVerHospedaje.Show();
                    HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                    TBNombreReserva.Text = Regex.Replace(TBNombreReserva.Text, @"\s+", " ").Trim();
                    string nombre = TBNombreReserva.Text;
                    dataTableTemporal = buscarDataAccess.buscarHospedajeNombre(TBNombreReserva.Text);
                    DGHospedaje.DataSource = dataTableTemporal;
                }
            }
            catch (Exception exp) { }
        }

        private void CBTipoBusqueda_SelectedValueChanged(object sender, EventArgs e)
        {
            if (CBTipoBusqueda.Text == "Numero Habitacion")
            {
                CBHabitaciones.Show();
                TBNombreReserva.Hide();
            }
            if (CBTipoBusqueda.Text == "Nombre y Apellido")
            {
                CBHabitaciones.Hide();
                TBNombreReserva.Show();
            }
            TBBuscarHospedaje_Click(sender, e);
        }

        private void BTVerHospedaje_Click(object sender, EventArgs e)
        {
            if (CBTipoBusqueda.Text == "Numero Habitacion")
            {
                HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                dataTableTemporal = buscarDataAccess.buscarHospedaje(CBHabitaciones.Text);
                VerHospedajeHabitacion verhospedaje = new VerHospedajeHabitacion();
                verhospedaje.ShowDialog();
            }
            if (CBTipoBusqueda.Text == "Nombre y Apellido")
            {
                HospedajeDataAccess verInformacion = new HospedajeDataAccess();
                try
                {
                    int fila = DGHospedaje.CurrentRow.Index;
                    string numeroDocumento = DGHospedaje.Rows[fila].Cells["numeroDocumento"].Value.ToString();
                    string fechaLlegada = DGHospedaje.Rows[fila].Cells["fechaLlegada"].Value.ToString();
                    string fechaRegistro = DGHospedaje.Rows[fila].Cells["fechaRegistro"].Value.ToString();
                    VerHospedajeCliente verDetallePersonal = new VerHospedajeCliente(verInformacion.buscarTodosDatos(numeroDocumento, fechaLlegada, fechaRegistro));
                    verDetallePersonal.ShowDialog();
                }
                catch (SystemException exeption) { }
            }
        }

        private void BTCancelarHospedaje_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBTipoBusqueda.Text == "Numero Habitacion")
                {
                    if (CBHabitaciones.Text.Length > 0 && DGHospedaje.Rows.Count>0)
                    {
                        CancelarHospedajeHabitacion verhospedaje = new CancelarHospedajeHabitacion(CBHabitaciones.Text);
                        verhospedaje.ShowDialog();
                    }
                }
                if (CBTipoBusqueda.Text == "Nombre y Apellido")
                {
                    HospedajeDataAccess verInformacion = new HospedajeDataAccess();
                    try
                    {
                        int fila = DGHospedaje.CurrentRow.Index;
                        string numeroDocumento = DGHospedaje.Rows[fila].Cells["numeroDocumento"].Value.ToString();
                        string fechaLlegada = DGHospedaje.Rows[fila].Cells["fechaLlegada"].Value.ToString();
                        string fechaRegistro = DGHospedaje.Rows[fila].Cells["fechaRegistro"].Value.ToString();
                        string fechaSalida = DGHospedaje.Rows[fila].Cells["fechaSalida"].Value.ToString();
                        string numeroHabitacion = DGHospedaje.Rows[fila].Cells["numeroHabitacion"].Value.ToString();
                        CancelarHospedaje verDetallePersonal = new CancelarHospedaje(numeroDocumento, fechaLlegada, fechaSalida, fechaRegistro, numeroHabitacion);
                        verDetallePersonal.ShowDialog();
                    }
                    catch (SystemException exeption) { }
                }
            }
            catch (Exception exp) { }
            TBBuscarHospedaje_Click(sender, e);
        }

        private void BTEditarHospedaje_Click(object sender, EventArgs e)
        {
            if (CBTipoBusqueda.Text == "Numero Habitacion")
            {
                //ReservasDataAccess verInformacion = new ReservasDataAccess();
                try
                {
                    if (DGHospedaje.Rows.Count > 0)
                    {
                        HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                        dataTableTemporal = buscarDataAccess.buscarHospedaje(CBHabitaciones.Text);
                        EditarHospedajeHabitacion verDetallePersonal = new EditarHospedajeHabitacion(dataTableTemporal, CBHabitaciones.Text);
                        verDetallePersonal.ShowDialog();
                    }
                }
                catch (SystemException exeption) { }
            }
            if (CBTipoBusqueda.Text == "Nombre y Apellido")
            {
                HospedajeDataAccess verInformacion = new HospedajeDataAccess();
                try
                {
                    int fila = DGHospedaje.CurrentRow.Index;
                    string numeroDocumento = DGHospedaje.Rows[fila].Cells["numeroDocumento"].Value.ToString();
                    string fechaLlegada = DGHospedaje.Rows[fila].Cells["fechaLlegada"].Value.ToString();
                    string fechaRegistro = DGHospedaje.Rows[fila].Cells["fechaRegistro"].Value.ToString();
                    string fechaSalida = DGHospedaje.Rows[fila].Cells["fechaSalida"].Value.ToString();
                    string numeroHabitacion = DGHospedaje.Rows[fila].Cells["numeroHabitacion"].Value.ToString();
                    EditarHospedaje verDetallePersonal = new EditarHospedaje(numeroDocumento, fechaLlegada, fechaSalida, fechaRegistro,numeroHabitacion);
                    verDetallePersonal.ShowDialog();
                }
                catch (SystemException exeption) { }
            }
            TBBuscarHospedaje_Click(sender, e);
        }

        private void CBTipoBusqueda_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;            
        }

        private void CBHabitaciones_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void BTCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void BTAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBHabitaciones.Text.Length > 0 && DGHospedaje.Rows.Count>0)
                {
                    ConfirmarSalida verhospedaje = new ConfirmarSalida(CBHabitaciones.Text,DGHospedaje.RowCount.ToString());
                    verhospedaje.ShowDialog();
                }
            }
            catch (Exception exp) { }
            TBBuscarHospedaje_Click(sender, e);
        }
    }
}
